library(tidyverse) # Varias funciones de tidyverse (dplyr, ggplot2, etc.)
library(rio) # Navaja suiza de la importación de datos
library(skimr) # Análisis inicial de datos
library(Hmisc) # Análisis inicial de datos
library(janitor) # Para identificar duplicados
library(gt) # Gramatica de tablas
library(gtsummary) # Wrapper de gt para inv. biomedica
library(patchwork) # Componer, fusionar, manipular graficos ggplot2
library(knitr) # Para usar algunos superpoderes de Quarto (include_graphics)
library(kableExtra)1 Introducción
En este taller replicaremos algunas tablas y análisis de datos del siguiente artículo: https://www.sciencedirect.com/science/article/pii/S2590136223000529
2 Parte 1
En esta parte del taller continuaremos analizando los datos que analizamos en el taller pasado sobre el experimento aleatorizado de maca
2.1 Cargar paquetes
2.2 Cargar los datos
data <- import("data_derived_pf.rds")2.3 Explorar datos
head(data)# A tibble: 6 × 76
record_id age agecat agecat2 sex nac ingresos_per ingresos_fam prof_cat
<labelled> <dbl> <fct> <fct> <fct> <fct> <fct> <fct> <fct>
1 SA0001F2 33 20-44 (30,40] Male Peru <NA> <NA> Adminis…
2 SA0002F2 54 45-59 (50,60] Fema… Peru 5581-9300 5581-9300 Nurses
3 SA0004F2 51 45-59 (50,60] Male Peru >=9301 >=9301 Pyshici…
4 SA0007F2 64 60+ (60,70] Male Peru 3721-5580 3721-5580 Pyshici…
5 SA0008F2 69 60+ (60,70] Fema… Peru <NA> <NA> Pyshici…
6 SA0009F2 68 60+ (60,70] Male Peru 5581-9300 5581-9300 Pyshici…
# ℹ 67 more variables: hosp <fct>, area_cat <fct>, modal_cat <fct>,
# height <dbl>, weight <int>, bmi <dbl>, bmicat <fct>, ncomorb <dbl>,
# ncomorb2 <fct>, com_hta <fct>, com_diab <fct>, com_obes <fct>,
# com_epc <fct>, com_trasp <fct>, com_cancer <fct>, com_asma <fct>,
# com_desnut <fct>, com_hipot <fct>, com_vih <fct>, com_otro <fct>,
# inmunosup <fct>, infprev <fct>, inf2 <fct>, boost <fct>, boost_date <date>,
# boost_react <fct>, boost_react_dolor <fct>, boost_react_enroj <fct>, …
glimpse(data)Rows: 595
Columns: 76
$ record_id <labelled> "SA0001F2", "SA0002F2", "SA0004F2", "SA0007…
$ age <dbl> 33, 54, 51, 64, 69, 68, 41, 61, 29, 20, 61, 59, …
$ agecat <fct> 20-44, 45-59, 45-59, 60+, 60+, 60+, 20-44, 60+, …
$ agecat2 <fct> "(30,40]", "(50,60]", "(50,60]", "(60,70]", "(60…
$ sex <fct> Male, Female, Male, Male, Female, Male, Male, Ma…
$ nac <fct> Peru, Peru, Peru, Peru, Peru, Peru, Peru, Peru, …
$ ingresos_per <fct> NA, 5581-9300, >=9301, 3721-5580, NA, 5581-9300,…
$ ingresos_fam <fct> NA, 5581-9300, >=9301, 3721-5580, NA, 5581-9300,…
$ prof_cat <fct> Administrative and Others, Nurses, Pyshicians, P…
$ hosp <fct> Hospital Nacional G. Almenara Irigoyen, Hospital…
$ area_cat <fct> "Administ., apoyo al diagnostico y otros", "Admi…
$ modal_cat <fct> Presential/Mix, Presential/Mix, Presential/Mix, …
$ height <dbl> 165, 157, 159, 172, 163, 177, 170, 183, 168, 165…
$ weight <int> 67, 82, 62, 76, 100, 78, 72, 96, 68, 72, 72, 56,…
$ bmi <dbl> 24.61, 33.27, 24.52, 25.69, 37.64, 24.90, 24.91,…
$ bmicat <fct> Normal interval, Obesity, Normal interval, Overw…
$ ncomorb <dbl> 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, …
$ ncomorb2 <fct> No comorbidities, No comorbidities, At least 1 c…
$ com_hta <fct> No, No, Yes, Yes, No, Yes, No, No, No, No, Yes, …
$ com_diab <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_obes <fct> No, No, No, No, Yes, No, No, No, No, No, No, No,…
$ com_epc <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_trasp <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_cancer <fct> No, No, No, Yes, No, No, No, No, No, No, No, No,…
$ com_asma <fct> No, No, No, Yes, No, No, No, No, No, No, No, No,…
$ com_desnut <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_hipot <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_vih <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_otro <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ inmunosup <fct> Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes…
$ infprev <fct> No, No, Yes, No, No, No, No, No, No, No, No, No,…
$ inf2 <fct> No, No, Yes, No, No, No, No, No, No, No, No, No,…
$ boost <fct> Pfizer, Pfizer, Pfizer, Pfizer, Pfizer, Pfizer, …
$ boost_date <date> 2021-10-16, 2021-11-11, 2021-10-15, 2021-10-15,…
$ boost_react <fct> Yes, Yes, Yes, Yes, Yes, No, Yes, Yes, Yes, Yes,…
$ boost_react_dolor <fct> Yes, No, Yes, Yes, Yes, No, Yes, Yes, Yes, Yes, …
$ boost_react_enroj <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_inflam <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_malest <fct> No, Yes, No, No, No, No, No, No, Yes, No, No, Ye…
$ boost_react_cefalea <fct> No, Yes, No, No, Yes, No, No, No, No, No, Yes, Y…
$ boost_react_fatiga <fct> No, No, No, No, No, No, No, No, No, No, No, Yes,…
$ boost_react_somno <fct> No, No, No, No, No, No, No, No, No, No, No, Yes,…
$ boost_react_fiebre <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_escal <fct> No, No, No, No, No, No, No, No, Yes, No, No, No,…
$ boost_react_nausea <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_vomito <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_diarrea <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_dolmusc <fct> No, No, Yes, No, No, No, No, No, No, No, No, No,…
$ boost_react_dolart <fct> No, Yes, No, No, No, No, No, No, No, No, No, No,…
$ boost_react_alerg <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_hipotens <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_hipertens <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_taquicard <fct> No, Yes, No, No, No, No, No, No, No, No, No, No,…
$ boost_react_mareo <fct> No, No, No, Yes, No, No, No, No, No, No, No, No,…
$ boost_react_dolpecho <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_cansancio <fct> No, Yes, No, No, No, No, No, No, No, No, No, No,…
$ boost_react_rinorrea <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_adenop <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_granuloma <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_disfon <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_tos <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_dolgarg <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_uter <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_insomnio <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_urticaria <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_inapet <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_tend <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ date_dosis1 <date> 2021-02-19, 2021-03-10, 2021-02-11, 2021-03-01,…
$ date_dosis2 <date> 2021-03-12, 2021-03-31, 2021-03-04, 2021-03-22,…
$ date_igg <date> 2021-12-02, 2021-12-09, 2021-11-24, 2021-11-23,…
$ tfdos1boost <dbl> 239, 246, 246, 228, 237, 231, 248, 246, 244, 240…
$ tfdos2boost <dbl> 218, 225, 225, 207, 216, 210, 227, 225, 223, 219…
$ tfboostig <dbl> 47, 28, 40, 39, 37, 54, 36, 44, 42, 37, 36, 38, …
$ igg <dbl> 6290, 8970, 12700, 4600, 17800, 7310, 7130, 6910…
$ logigg <dbl> 8.746716, 9.101641, 9.449357, 8.433812, 9.786954…
$ igg_pos <fct> Positive, Positive, Positive, Positive, Positive…
skim(data)| Name | data |
| Number of rows | 595 |
| Number of columns | 76 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| Date | 4 |
| factor | 61 |
| numeric | 10 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| record_id | 0 | 1 | 8 | 8 | 0 | 595 | 0 |
Variable type: Date
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| boost_date | 0 | 1 | 2021-08-03 | 2021-12-18 | 2021-10-17 | 38 |
| date_dosis1 | 0 | 1 | 2021-02-09 | 2021-04-19 | 2021-02-13 | 37 |
| date_dosis2 | 0 | 1 | 2021-03-02 | 2021-07-03 | 2021-03-08 | 42 |
| date_igg | 0 | 1 | 2021-11-15 | 2022-01-18 | 2021-11-26 | 33 |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| agecat | 0 | 1.00 | FALSE | 3 | 20-: 269, 45-: 235, 60+: 91 |
| agecat2 | 0 | 1.00 | FALSE | 5 | (30: 173, (40: 167, (50: 132, (60: 81 |
| sex | 0 | 1.00 | FALSE | 2 | Fem: 425, Mal: 170 |
| nac | 0 | 1.00 | FALSE | 2 | Per: 590, For: 5 |
| ingresos_per | 192 | 0.68 | FALSE | 7 | 372: 116, 558: 112, 279: 61, 186: 42 |
| ingresos_fam | 228 | 0.62 | FALSE | 7 | 558: 100, >=9: 99, 372: 80, 279: 34 |
| prof_cat | 0 | 1.00 | FALSE | 4 | Pys: 187, Nur: 168, Tec: 146, Adm: 94 |
| hosp | 3 | 0.99 | FALSE | 7 | Hos: 257, Hos: 186, Hos: 118, Vil: 24 |
| area_cat | 1 | 1.00 | FALSE | 5 | Hos: 162, Adm: 141, Eme: 118, UCI: 104 |
| modal_cat | 0 | 1.00 | FALSE | 2 | Pre: 539, Lic: 56 |
| bmicat | 0 | 1.00 | FALSE | 3 | Ove: 283, Nor: 215, Obe: 97 |
| ncomorb2 | 0 | 1.00 | FALSE | 2 | No : 411, At : 184 |
| com_hta | 0 | 1.00 | FALSE | 2 | No: 531, Yes: 64 |
| com_diab | 0 | 1.00 | FALSE | 2 | No: 568, Yes: 27 |
| com_obes | 0 | 1.00 | FALSE | 2 | No: 554, Yes: 41 |
| com_epc | 0 | 1.00 | FALSE | 1 | No: 595, Yes: 0 |
| com_trasp | 0 | 1.00 | FALSE | 1 | No: 595, Yes: 0 |
| com_cancer | 0 | 1.00 | FALSE | 2 | No: 583, Yes: 12 |
| com_asma | 0 | 1.00 | FALSE | 2 | No: 550, Yes: 45 |
| com_desnut | 0 | 1.00 | FALSE | 1 | No: 595, Yes: 0 |
| com_hipot | 0 | 1.00 | FALSE | 2 | No: 554, Yes: 41 |
| com_vih | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| com_otro | 0 | 1.00 | FALSE | 1 | No: 595, Yes: 0 |
| inmunosup | 0 | 1.00 | FALSE | 2 | Yes: 518, No: 77 |
| infprev | 0 | 1.00 | FALSE | 2 | No: 358, Yes: 237 |
| inf2 | 0 | 1.00 | FALSE | 2 | No: 358, Yes: 237 |
| boost | 0 | 1.00 | FALSE | 1 | Pfi: 595, Ast: 0, Sin: 0 |
| boost_react | 0 | 1.00 | FALSE | 2 | Yes: 483, No: 112 |
| boost_react_dolor | 0 | 1.00 | FALSE | 2 | Yes: 420, No: 175 |
| boost_react_enroj | 0 | 1.00 | FALSE | 2 | No: 585, Yes: 10 |
| boost_react_inflam | 0 | 1.00 | FALSE | 2 | No: 575, Yes: 20 |
| boost_react_malest | 0 | 1.00 | FALSE | 2 | No: 446, Yes: 149 |
| boost_react_cefalea | 0 | 1.00 | FALSE | 2 | No: 486, Yes: 109 |
| boost_react_fatiga | 0 | 1.00 | FALSE | 2 | No: 561, Yes: 34 |
| boost_react_somno | 0 | 1.00 | FALSE | 2 | No: 539, Yes: 56 |
| boost_react_fiebre | 0 | 1.00 | FALSE | 2 | No: 526, Yes: 69 |
| boost_react_escal | 0 | 1.00 | FALSE | 2 | No: 565, Yes: 30 |
| boost_react_nausea | 0 | 1.00 | FALSE | 2 | No: 578, Yes: 17 |
| boost_react_vomito | 0 | 1.00 | FALSE | 2 | No: 588, Yes: 7 |
| boost_react_diarrea | 0 | 1.00 | FALSE | 2 | No: 587, Yes: 8 |
| boost_react_dolmusc | 0 | 1.00 | FALSE | 2 | No: 551, Yes: 44 |
| boost_react_dolart | 0 | 1.00 | FALSE | 2 | No: 569, Yes: 26 |
| boost_react_alerg | 0 | 1.00 | FALSE | 2 | No: 592, Yes: 3 |
| boost_react_hipotens | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| boost_react_hipertens | 0 | 1.00 | FALSE | 1 | No: 595, Yes: 0 |
| boost_react_taquicard | 0 | 1.00 | FALSE | 2 | No: 593, Yes: 2 |
| boost_react_mareo | 0 | 1.00 | FALSE | 2 | No: 590, Yes: 5 |
| boost_react_dolpecho | 0 | 1.00 | FALSE | 2 | No: 592, Yes: 3 |
| boost_react_cansancio | 0 | 1.00 | FALSE | 2 | No: 593, Yes: 2 |
| boost_react_rinorrea | 0 | 1.00 | FALSE | 2 | No: 593, Yes: 2 |
| boost_react_adenop | 0 | 1.00 | FALSE | 1 | No: 595, Yes: 0 |
| boost_react_granuloma | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| boost_react_disfon | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| boost_react_tos | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| boost_react_dolgarg | 0 | 1.00 | FALSE | 2 | No: 593, Yes: 2 |
| boost_react_uter | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| boost_react_insomnio | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| boost_react_urticaria | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| boost_react_inapet | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| boost_react_tend | 0 | 1.00 | FALSE | 2 | No: 594, Yes: 1 |
| igg_pos | 0 | 1.00 | FALSE | 1 | Pos: 595, Neg: 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| age | 0 | 1 | 46.10 | 11.11 | 20.00 | 37.00 | 46.00 | 54.00 | 70.00 | ▂▇▇▆▃ |
| height | 0 | 1 | 160.66 | 8.41 | 140.00 | 155.00 | 160.00 | 166.00 | 186.00 | ▁▇▆▃▁ |
| weight | 0 | 1 | 69.06 | 13.42 | 45.00 | 60.00 | 67.00 | 78.00 | 158.00 | ▇▇▁▁▁ |
| bmi | 0 | 1 | 26.62 | 3.84 | 18.82 | 24.33 | 25.97 | 28.44 | 58.03 | ▇▅▁▁▁ |
| ncomorb | 0 | 1 | 0.39 | 0.66 | 0.00 | 0.00 | 0.00 | 1.00 | 5.00 | ▇▁▁▁▁ |
| tfdos1boost | 0 | 1 | 244.37 | 10.08 | 159.00 | 240.00 | 246.00 | 248.00 | 306.00 | ▁▁▇▅▁ |
| tfdos2boost | 0 | 1 | 222.80 | 11.17 | 113.00 | 219.00 | 224.00 | 227.00 | 285.00 | ▁▁▁▇▁ |
| tfboostig | 0 | 1 | 41.51 | 13.00 | 20.00 | 32.00 | 38.00 | 48.00 | 157.00 | ▇▂▁▁▁ |
| igg | 0 | 1 | 10446.99 | 7699.77 | 116.00 | 5115.00 | 8410.00 | 13000.00 | 41600.00 | ▇▅▂▁▁ |
| logigg | 0 | 1 | 8.99 | 0.79 | 4.75 | 8.54 | 9.04 | 9.47 | 10.64 | ▁▁▂▇▃ |
2.4 Replicar Tabla 1
Ejercicio 1
Seleccione las variables para crear la tabla 1. Las variables son las siguientes: age, agecat2, sex, nac, ingresos_per, ingresos_fam, prof_cat, hosp, area_cat, modal_cat, height, weight, ncomorb, bmi, bmicat, com_hta, com_diab, com_epc:com_vih, inmunosup, infprev, boost, tfdos1boost, tfdos2boost, tfboostig, igg, igg_pos, boost_react (mantenga el orden). Usando gtsummary, cree la tabla 1 que mejor replique la presentada en el artículo.
data |>
select(age, agecat2, sex, nac, ingresos_per, ingresos_fam,
prof_cat, hosp, area_cat, modal_cat, height, weight,
ncomorb, bmi, bmicat, com_hta, com_diab, com_epc:com_vih,
inmunosup, infprev, boost, tfdos1boost, tfdos2boost,
tfboostig, igg, igg_pos, boost_react) |>
tbl_summary(statistic = list(all_continuous() ~ "{median} [{p25}, {p75}]",
all_categorical() ~ "{n} ({p})")) |>
bold_labels()| Characteristic | N = 5951 |
|---|---|
| Age (years) | 46 [37, 54] |
| Age group | |
| [20,30] | 42 (7.1) |
| (30,40] | 173 (29) |
| (40,50] | 167 (28) |
| (50,60] | 132 (22) |
| (60,70] | 81 (14) |
| Sex | |
| Male | 170 (29) |
| Female | 425 (71) |
| Nationality | |
| Peru | 590 (99) |
| Foreign | 5 (0.8) |
| Personal income per month | |
| <930 | 7 (1.7) |
| 931-1860 | 24 (6.0) |
| 1861-2790 | 42 (10) |
| 2791-3720 | 61 (15) |
| 3721-5580 | 116 (29) |
| 5581-9300 | 112 (28) |
| >=9301 | 41 (10) |
| Unknown | 192 |
| Familiar income per month | |
| <930 | 8 (2.2) |
| 931-1860 | 13 (3.5) |
| 1861-2790 | 33 (9.0) |
| 2791-3720 | 34 (9.3) |
| 3721-5580 | 80 (22) |
| 5581-9300 | 100 (27) |
| >=9301 | 99 (27) |
| Unknown | 228 |
| Profession | |
| Administrative and Others | 94 (16) |
| Nurses | 168 (28) |
| Pyshicians | 187 (31) |
| Technical nurses | 146 (25) |
| Hospital | |
| Hospital Nacional E. Rebagliati Martins | 257 (43) |
| Hospital Nacional A. Sabogal Sologuren | 186 (31) |
| Hospital Nacional G. Almenara Irigoyen | 118 (20) |
| Villa Mongrut | 24 (4.1) |
| H. Angamos | 4 (0.7) |
| Villa Panamericana | 2 (0.3) |
| Policlinico PIASA | 1 (0.2) |
| Unknown | 3 |
| Work area | |
| Administ., apoyo al diagnostico y otros | 141 (24) |
| Consulta externa/domic | 69 (12) |
| Emergencia | 118 (20) |
| Hospitalización | 162 (27) |
| UCI | 104 (18) |
| Unknown | 1 |
| Work modality | |
| License/Teleworking | 56 (9.4) |
| Presential/Mix | 539 (91) |
| Height (cm) | 160 [155, 166] |
| Weight (kg) | 67 [60, 78] |
| Number of comorbidities | |
| 0 | 411 (69) |
| 1 | 146 (25) |
| 2 | 31 (5.2) |
| 3 | 6 (1.0) |
| 5 | 1 (0.2) |
| Body mass index (kg/m2) | 26.0 [24.3, 28.4] |
| BMI group | |
| Normal interval | 215 (36) |
| Overweight | 283 (48) |
| Obesity | 97 (16) |
| Hypertension | 64 (11) |
| Diabetes | 27 (4.5) |
| Chronic lung disease | 0 (0) |
| Organ transplant | 0 (0) |
| Cancer | 12 (2.0) |
| Asthma | 45 (7.6) |
| Undernourishment | 0 (0) |
| Hypothyroidism | 41 (6.9) |
| HIV | 1 (0.2) |
| Immunosuppressive condition | 518 (87) |
| Previous infection | 237 (40) |
| Booster scheme | |
| Pfizer | 595 (100) |
| Astrazeneca | 0 (0) |
| Sinopharm | 0 (0) |
| Time from dosis 1 to boosting | 246 [240, 248] |
| Time from dosis 2 to boosting | 224 [219, 227] |
| Time from boosting to IgG measure | 38 [32, 48] |
| Antibodies Anti-SARS-CoV-2 levels (BAU/mL) | 8,410 [5,115, 13,000] |
| Seropositivity | |
| Negative | 0 (0) |
| Positive | 595 (100) |
| Reactogenicity | 483 (81) |
| 1 Median [IQR]; n (%) | |
Ejercicio 2
Cree una tabla nueva (no presentada en el artículo) según la variable respuesta rectogenicidad (boost_react).
data |>
select(age, agecat2, sex, nac, ingresos_per, ingresos_fam,
prof_cat, hosp, area_cat, modal_cat, height, weight,
ncomorb, bmi, bmicat, com_hta, com_diab, com_epc:com_vih,
inmunosup, infprev, boost, tfdos1boost, tfdos2boost,
tfboostig, igg, igg_pos, boost_react) |>
tbl_summary(statistic = list(all_continuous() ~ "{median} [{p25}, {p75}]",
all_categorical() ~ "{n} ({p})"),
by = boost_react,
percent = "row") |>
bold_labels()| Characteristic | Yes, N = 4831 | No, N = 1121 |
|---|---|---|
| Age (years) | 46 [37, 54] | 46 [36, 56] |
| Age group | ||
| [20,30] | 29 (69) | 13 (31) |
| (30,40] | 142 (82) | 31 (18) |
| (40,50] | 141 (84) | 26 (16) |
| (50,60] | 109 (83) | 23 (17) |
| (60,70] | 62 (77) | 19 (23) |
| Sex | ||
| Male | 139 (82) | 31 (18) |
| Female | 344 (81) | 81 (19) |
| Nationality | ||
| Peru | 479 (81) | 111 (19) |
| Foreign | 4 (80) | 1 (20) |
| Personal income per month | ||
| <930 | 7 (100) | 0 (0) |
| 931-1860 | 16 (67) | 8 (33) |
| 1861-2790 | 25 (60) | 17 (40) |
| 2791-3720 | 48 (79) | 13 (21) |
| 3721-5580 | 100 (86) | 16 (14) |
| 5581-9300 | 91 (81) | 21 (19) |
| >=9301 | 32 (78) | 9 (22) |
| Unknown | 164 | 28 |
| Familiar income per month | ||
| <930 | 8 (100) | 0 (0) |
| 931-1860 | 7 (54) | 6 (46) |
| 1861-2790 | 21 (64) | 12 (36) |
| 2791-3720 | 27 (79) | 7 (21) |
| 3721-5580 | 67 (84) | 13 (16) |
| 5581-9300 | 88 (88) | 12 (12) |
| >=9301 | 77 (78) | 22 (22) |
| Unknown | 188 | 40 |
| Profession | ||
| Administrative and Others | 74 (79) | 20 (21) |
| Nurses | 151 (90) | 17 (10) |
| Pyshicians | 159 (85) | 28 (15) |
| Technical nurses | 99 (68) | 47 (32) |
| Hospital | ||
| Hospital Nacional E. Rebagliati Martins | 217 (84) | 40 (16) |
| Hospital Nacional A. Sabogal Sologuren | 147 (79) | 39 (21) |
| Hospital Nacional G. Almenara Irigoyen | 92 (78) | 26 (22) |
| Villa Mongrut | 21 (88) | 3 (13) |
| H. Angamos | 2 (50) | 2 (50) |
| Villa Panamericana | 1 (50) | 1 (50) |
| Policlinico PIASA | 1 (100) | 0 (0) |
| Unknown | 2 | 1 |
| Work area | ||
| Administ., apoyo al diagnostico y otros | 116 (82) | 25 (18) |
| Consulta externa/domic | 51 (74) | 18 (26) |
| Emergencia | 103 (87) | 15 (13) |
| Hospitalización | 130 (80) | 32 (20) |
| UCI | 82 (79) | 22 (21) |
| Unknown | 1 | 0 |
| Work modality | ||
| License/Teleworking | 44 (79) | 12 (21) |
| Presential/Mix | 439 (81) | 100 (19) |
| Height (cm) | 160 [155, 166] | 160 [155, 165] |
| Weight (kg) | 67 [59, 78] | 68 [61, 78] |
| Number of comorbidities | ||
| 0 | 330 (80) | 81 (20) |
| 1 | 121 (83) | 25 (17) |
| 2 | 27 (87) | 4 (13) |
| 3 | 5 (83) | 1 (17) |
| 5 | 0 (0) | 1 (100) |
| Body mass index (kg/m2) | 26.1 [24.2, 28.5] | 25.8 [24.7, 28.4] |
| BMI group | ||
| Normal interval | 180 (84) | 35 (16) |
| Overweight | 223 (79) | 60 (21) |
| Obesity | 80 (82) | 17 (18) |
| Hypertension | 51 (80) | 13 (20) |
| Diabetes | 23 (85) | 4 (15) |
| Chronic lung disease | 0 (NA) | 0 (NA) |
| Organ transplant | 0 (NA) | 0 (NA) |
| Cancer | 9 (75) | 3 (25) |
| Asthma | 36 (80) | 9 (20) |
| Undernourishment | 0 (NA) | 0 (NA) |
| Hypothyroidism | 34 (83) | 7 (17) |
| HIV | 1 (100) | 0 (0) |
| Immunosuppressive condition | 421 (81) | 97 (19) |
| Previous infection | 194 (82) | 43 (18) |
| Booster scheme | ||
| Pfizer | 483 (81) | 112 (19) |
| Astrazeneca | 0 (NA) | 0 (NA) |
| Sinopharm | 0 (NA) | 0 (NA) |
| Time from dosis 1 to boosting | 246 [240, 248] | 246 [240, 249] |
| Time from dosis 2 to boosting | 224 [219, 227] | 225 [219, 227] |
| Time from boosting to IgG measure | 38 [32, 48] | 40 [33, 50] |
| Antibodies Anti-SARS-CoV-2 levels (BAU/mL) | 8,530 [5,270, 13,450] | 7,820 [4,743, 11,525] |
| Seropositivity | ||
| Negative | 0 (NA) | 0 (NA) |
| Positive | 483 (81) | 112 (19) |
| 1 Median [IQR]; n (%) | ||
Ejercicio 3
Observe la Tabla 2 y haga una lectura crítica de esta. ¿Qué aspecto del análisis y presentación de resultados no aporta valor y es considerado una práctica que debe evitarse?
# Escriba el código aquí2.5 Replicar Figura 1
Ejercicio 4
Trate de replicar cada uno de los gráficos de la Figura 1. Cree la Fig1A, Fig1B, etc por separado.
- Grafico de densidad
data |>
ggplot(aes(x = igg)) +
geom_density(fill = "red", alpha = 0.25) +
labs(x = "Density", y = "IgG (BAU/ml)") +
theme_bw() -> g0
g0library(viridis)
library(ggsci)
library(scales)
pd <- position_dodge(0.3)
alfa <- 0.1
# Density plot----
data %>%
ggplot() +
aes(x = igg) +
geom_density(alpha = 0.25, fill = "red") +
labs(y = "Density", x = "IgG (BAU/ml)") +
guides(fill = guide_legend(title = "")) +
theme_bw() +
theme(legend.position = c(0.90, 0.90)) +
scale_fill_lancet() -> g0; g0# Work/modality----
pd <- position_dodge(0.3)
alfa <- 0.1
data %>%
mutate(modal_cat = factor(modal_cat,
levels = c("License/Teleworking",
"Presential/Mix"),
labels = c("Work leave/remote",
"Full/part-time in-person"))) %>%
arrange(igg) %>%
ggplot() +
aes(x = modal_cat, y = igg, group = modal_cat,
color = modal_cat, alpha = 0.1) +
geom_boxplot(aes(group = modal_cat), outlier.shape = NA) +
scale_fill_viridis(discrete = TRUE, alpha=0.6) +
geom_jitter(color="black", size=1, alpha=0.9) +
theme(
legend.position="none",
plot.title = element_text(size=11)
) +
geom_point(position = pd, size = 0.1) +
labs(y = "IgG after booster (BAU/mL)",
x = "Working modality") +
scale_y_continuous(trans = "log", labels = comma) +
theme_bw() +
theme(legend.position = "none") +
scale_color_lancet() -> g1; g1# Previous infection----
# infprev
pd <- position_dodge(0.3)
alfa <- 0.1
data %>%
arrange(igg) %>%
ggplot() +
aes(x = infprev, y = igg, group = infprev,
color = infprev, alpha = 0.1) +
geom_boxplot(aes(group = infprev), outlier.shape = NA) +
scale_fill_viridis(discrete = TRUE, alpha=0.6) +
geom_jitter(color="black", size=1, alpha=0.9) +
theme(
legend.position="none",
plot.title = element_text(size=11)
) +
geom_point(position = pd, size = 0.1) +
labs(y = "IgG after booster (BAU/mL)",
x = "Previous infection") +
scale_y_continuous(trans = "log", labels = comma) +
theme_bw() +
theme(legend.position = "none") +
scale_color_lancet() -> g2; g2# Inmunosuprresive condition----
# inmunosup
pd <- position_dodge(0.3)
alfa <- 0.1
data %>%
arrange(igg) %>%
ggplot() +
aes(x = inmunosup, y = igg, group = inmunosup,
color = inmunosup, alpha = 0.1) +
geom_boxplot(aes(group = inmunosup), outlier.shape = NA) +
scale_fill_viridis(discrete = TRUE, alpha=0.6) +
geom_jitter(color="black", size=1, alpha=0.9) +
theme(
legend.position="none",
plot.title = element_text(size=11)
) +
geom_point(position = pd, size = 0.1) +
labs(y = "IgG after booster (BAU/mL)",
x = "Immunosuppressive condition") +
scale_y_continuous(trans = "log", labels = comma) +
theme_bw() +
theme(legend.position = "none") +
scale_color_lancet() -> g3; g3# Diabetes----
# com_diab
pd <- position_dodge(0.3)
alfa <- 0.1
data %>%
arrange(igg) %>%
ggplot() +
aes(x = com_diab, y = igg, group = com_diab,
color = com_diab, alpha = 0.1) +
geom_boxplot(aes(group = com_diab), outlier.shape = NA) +
scale_fill_viridis(discrete = TRUE, alpha=0.6) +
geom_jitter(color="black", size=1, alpha=0.9) +
theme(
legend.position="none",
plot.title = element_text(size=11)
) +
geom_point(position = pd, size = 0.1) +
labs(y = "IgG after booster (BAU/mL)",
x = "Diabetes") +
scale_y_continuous(trans = "log", labels = comma) +
theme_bw() +
theme(legend.position = "none") +
scale_color_lancet() -> g4; g4# Profession----
# prof_cat
pd <- position_dodge(0.3)
alfa <- 0.1
data %>%
mutate(prof_cat = factor(prof_cat,
levels = c("Administrative and Others",
"Nurses",
"Pyshicians",
"Technical nurses"),
labels = c("Admin/Others",
"Nurses",
"Physicians",
"Technical nurses"))) %>%
arrange(igg) %>%
ggplot() +
aes(x = prof_cat, y = igg, group = prof_cat,
color = prof_cat, alpha = 0.1) +
geom_boxplot(aes(group = prof_cat), outlier.shape = NA) +
scale_fill_viridis(discrete = TRUE, alpha=0.6) +
geom_jitter(color="black", size=1, alpha=0.9) +
theme(
legend.position="none",
plot.title = element_text(size=11)
) +
geom_point(position = pd, size = 0.1) +
labs(y = "IgG after booster (BAU/mL)",
x = "Profession") +
scale_y_continuous(trans = "log", labels = comma) +
theme_bw() +
theme(legend.position = "none") +
scale_color_lancet() -> g5; g5library(patchwork)g0 / g1g0 | g1(g0 / g1) | (g2 / plot_spacer()) | ( plot_spacer() / g3)(g0 | g1) +
plot_annotation(tag_levels = "A")plot_biv_cat <- (g0 | g1 | g2) / (g3 | g4 | g5) +
plot_annotation(tag_levels = "A")
plot_biv_catggsave(filename = "Grafico_Paper.jpg",
device = "jpg",
plot = plot_biv_cat,
scale = 2,
width = 3903,
height = 1822,
units = "px",
dpi = 600
)Ejercicio 5
Trate de replicar cada uno de los gráficos de la Figura 1. Cree la Fig1A, Fig1B, etc por separado.
# Escriba el código aquíEjercicio 6
Fusione los gráficos usando el paquete {patchwork} para replicar a la Figura 1.
# Escriba el código aquíEjercicio 7
Guarde el gráfico en formato “png”.
# Escriba el código aquíEjercicio 8
Imprima el gráfico en foramto “png” dentro del archivo quarto.
# Escriba el código aquíinclude_graphics("Grafico_Paper.png")Ejercicio 9
Renderice todo el quarto. Cambie el nombre del archivo html generado.
# Escriba el código aquíEjercicio 10
Modifique el YAML del Quarto para que la presentación de este mejore. Renderice el quarto final y compare con la primera versión del html generado en el ejercicio 9.
# Escriba el código aquí